// Go 提供了对base64 编码/解码的内置支持。支持标准和 URL 兼容的 base64
package main

import (
	b64 "encoding/base64"
	"fmt"
)

func main() {

	// 声明一个String类型的变量
	data := "abc123!?$*&()'-=@~"

	// 将data变量使用内置命令byte转化成byte数组，再转化成base64数据类型
	sEnc := b64.StdEncoding.EncodeToString([]byte(data))
	fmt.Println("sEnc: " + sEnc)

	// 对base64进行解码操作,下划线表示返回忽略的值，如果不忽略该值，那么可以在源码中看到，它会返回执行中遇到的错误信息err
	sDec, _ := b64.StdEncoding.DecodeString(sEnc)
	fmt.Println("sDec: " + string(sDec))
	fmt.Println()

	// 对data进行URL格式的base64编码
	uEnc := b64.URLEncoding.EncodeToString([]byte(data))
	fmt.Println(uEnc)

	// 对data进行URL格式的base64解码，下划线表示忽略返回的错误信息，一般用下划线代替err
	uDec, _ := b64.URLEncoding.DecodeString(uEnc)
	fmt.Println(string(uDec))
}
